import "@site/src/languages/highlight";

# QLearner

**描述：**

&emsp;&emsp;一个简单的强化学习框架，可用于使用Q-learning算法学习马尔可夫决策过程的最优策略。
Q-learning是一种无模型强化学习算法，通过反复更新一对状态和动作下计算的Q值，获得最优动作评估值的函数。

**类对象：**[QLearner Class](/docs/api/Class%20Object/QLearner)。

**继承自：**[Object](/docs/api/Class/Object)。

## matrix

**类型：** 只读成员变量。

**描述：**

&emsp;&emsp;存储状态、动作和Q值的矩阵。

**签名：**
```tl
const matrix: {{
		--[[state]] integer,
		--[[action]] integer,
		--[[Q-value]] number
	}}
```

## update

**类型：** 函数。

**描述：**

&emsp;&emsp;根据收到的奖励值更新一对状态和动作下的Q值。

**签名：**
```tl
update: function(self: QLearner, state: integer, action: integer, reward: number)
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| state | integer | 表示状态的整数。 |
| action | integer | 表示动作的整数。必须为大于0的整数。 |
| reward | number | 表示在状态中采取行动获得的奖励值。 |

## getBestAction

**类型：** 函数。

**描述：**

&emsp;&emsp;基于当前Q值返回给定状态的最佳动作。

**签名：**
```tl
getBestAction: function(self: QLearner, state: integer): integer
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| state | integer | 当前状态。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| integer | 给定状态下具有最高Q值的动作。返回0表示没有动作。 |

## load

**类型：** 函数。

**描述：**

&emsp;&emsp;从状态-动作对的矩阵中加载Q值。

**签名：**
```tl
load: function(self: QLearner, values: {{
			--[[state]] integer,
			--[[action]] integer,
			--[[Q-value]] number
		}})
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| values | \{\{integer 状态, integer 动作, number 状态-动作对的Q值}} | 要加载的状态-动作对的矩阵。 |